#include <iostream>
#include <windows.h>
#include "Const.h"
#include "Field.h"
#include "Food.h"
#include "Snake.h"
#include "Game.h"
#include "winconsole.h"


//��������������� ��������� �������� ���������� ����.
void init_game(char * field, int * snake_x, int& snake_size)//��������������� ��������� �������� ���������� ����.
{	
	srand(time(0));//��������� ������ ������������������, ������������ �������� rand() 	

	init_snake(snake_x, snake_size);//������������� ������� �������� ��������� ������ (snake_size � �������)

	system("cls");//������ ������� �������

	start_snake(snake_x);//������� ���������� ���������� ��������� ������ ������ 

	init_field(field);//�������������  ���� (������� ���������� ���� � ������)

	set_snake(field, snake_x, snake_size);//������ ��������������� � ������� ����

	print_field(field);//������ ����

	std::cout << "Press any key" << std::endl;//5)	����� ����������� � ����.
}

//������ ��������������� � ������� ����
void set_snake(char* field, int* snake_x, int& snake_size)
{	
		field[snake_x[0]] = head_symbol;//���������� ������

		// ��������� ������, ���� ����
		for (int i = 1; i < snake_size; i++)
		{			
			field[snake_x[L - i]] = tail_symbol;
		}	
}

//��������� ������� ������ � �������
void clear_snake(char* field, int* snake_x, int& snake_size)
{
	//������ "�����"
	field[snake_x[L - snake_size]] = field_symbol;
}

// ��� ��������������� � ������� ����.
void set_food(char* field, int& snake_size, bool& food_flag, int& food_x)
{
	if (!food_flag && snake_size < L)//���� ��� ��� � ������ �� �������� ������������� �������
	{
		do
		{
			generate_food(food_x);

		} while (field[food_x] != field_symbol);

		field[food_x] = food_symbol;

		food_flag = true;
	}	
}

//����������� �������� ����, ��� ������ ����� ���.
void check_eating(char* field, int* snake_x, int& snake_size, bool& food_flag)
{
	if (field[snake_x[0]] == food_symbol)//������� ���
	{
		food_flag = false;//��� ���

		snake_size++; //���������� ������� ������		
	}
}

//����������� �������� ����, ��� ������ ����������� � �������� ����.
void check_snake(int* snake_x)
{
	//if (field[snake_x[0]] == border_symbol) //������ ����������� � ��������
	if (snake_x[0] == columns-1) //������ ����������� � ��������
	{

	}

}

//�������� ����������  ����.
int check_game(int& snake_size, bool& food_flag)
{
	if (!food_flag && snake_size == L)//���� ��� ��� � ������ ������������� �������
	{
		std::cout << "The End" << std::endl;//������� ��������� �� ��������� ����
		//exit(0);//����� �� ���������
		return 0;
	}
	else { return 1; }
}
